package com.alameda.controller.v1.media;

import com.alameda.common.annotation.Lock;
import com.alameda.common.result.Result;
import com.alameda.media.dto.AdMediaDTO;
import com.alameda.service.media.AdMediaService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * 媒体文件 前端控制层
 *
 * @author Lv
 * @date 2024/07/20
 */
@Api(tags = "媒体文件")
@RestController
@RequestMapping("/ad_media")
public class AdMediaController {

    @Autowired
    private AdMediaService adMediaService;

    /**
     * 保存媒体文件
     *
     * @param adMediaDTO 媒体文件信息
     * @return
     */
    @Lock
    @ApiOperation("上传文件")
    @PostMapping("/upload")
    public Result<?> saveMedia(AdMediaDTO adMediaDTO) {
        return Result.success(adMediaService.saveMedia(adMediaDTO));
    }

    /**
     * 上传媒体文件封面
     *
     * @param adMediaDTO 媒体文件信息
     * @return
     */
    @Lock
    @ApiOperation("上传媒体文件封面")
    @PostMapping("/upload_media_cover")
    public Result<?> uploadMediaCover(AdMediaDTO adMediaDTO) {
        return Result.success(adMediaService.uploadMediaCover(adMediaDTO));
    }

    /**
     * 批量上传文件
     *
     * @param adMediaDTOList 媒体文件信息
     * @return
     */
    @Lock
    @ApiOperation("批量上传文件")
    @PostMapping("/upload_batch")
    public Result<?> uploadFileBatch(List<AdMediaDTO> adMediaDTOList) {
        return Result.success(adMediaService.uploadFileBatch(adMediaDTOList));
    }

    /**
     * 分页查询媒体文件
     *
     * @param adMediaDTO 媒体文件信息
     * @return
     */
    @ApiOperation("查询媒体文件")
    @PostMapping("/load_media")
    public Result<?> loadMedia(@RequestBody AdMediaDTO adMediaDTO) {
        return Result.success(adMediaService.loadMedia(adMediaDTO));
    }

    /**
     * 获取媒体信息详情
     *
     * @param adMediaDTO 媒体文件信息
     * @return
     */
    @ApiOperation("获取媒体信息详情")
    @PostMapping("/find_media_detail")
    public Result<?> findMediaDetail(@RequestBody AdMediaDTO adMediaDTO) {
        return Result.success(adMediaService.findMediaDetail(adMediaDTO));
    }

    /**
     * 修改媒体文件信息
     *
     * @param adMediaDTO 媒体文件信息
     * @return
     */
    @Lock
    @ApiOperation("修改媒体文件信息")
    @PostMapping("/update_media")
    public Result<?> updateMedia(@RequestBody AdMediaDTO adMediaDTO) {
        return Result.success(adMediaService.updateMedia(adMediaDTO));
    }

    /**
     * 删除媒体文件
     *
     * @param adMediaDTO 媒体文件信息
     * @return
     */
    @ApiOperation("删除媒体文件")
    @PostMapping("/remove_media")
    public Result<?> removeMedia(@RequestBody AdMediaDTO adMediaDTO) {
        return Result.success(adMediaService.removeMedia(adMediaDTO));
    }

    /**
     * 导出媒体excel
     *
     * @param adMediaDTO 媒体文件信息
     */
    @PostMapping("/export_excel")
    public void exportExcel(@RequestBody AdMediaDTO adMediaDTO) {
        adMediaService.exportExcel(adMediaDTO);
    }
}

